package com.hzit.manager;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ConfigurableApplicationContext;

/**
 * 类名：
 * 作者：WF
 * 功能：
 * 服务注册与发现三个步骤：[Nacos-Discovery]
 * 1、引入依赖：
 *         <dependency>
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 *         </dependency>
 * 2、在启动类上添加注解：（不是必须的）
 * @EnableDiscoveryClient
 * 3、添加配置：（不是必须的,默认值就是它）
 *    spring.cloud.nacos.discovery.server-addr=localhost:8848
 *
 * Nacos配置中心使用步骤：[Ncos-Config]
 * 1、启用bootstrap
 *         <dependency>
 *             <groupId>org.springframework.cloud</groupId>
 *             <artifactId>spring-cloud-starter-bootstrap</artifactId>
 *             <version>3.1.7</version>
 *         </dependency>
 * 2、添加依赖：
 *          <dependency>
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 *         </dependency>
 * 3、配置文件中指定配置中心服务器地址：（默认为：localhost:8848）
 *   spring.cloud.nacos.config.server-addr=localhost:8848
 * 4、在classpath下（resources）创建bootstrap.properties或bootstrap.yml文件：
 *    在其中指定端口、nacos地址、应用程序的名字
 * 5、对nacos进行持久化，参见官网：
 *    https://nacos.io/zh-cn/docs/v2/guide/admin/deployment.html
 * 6、当前应用的默认配置文件名（data-id）组成：
 *    {prefix}-{spring.pjofiles.active}.{suffix}
 *    {prefix}： 主要指应用程序的名字，即：spring.application.name属性指定
 *    {spring.pjofiles.active}: 我们配置的环境变量的值，没有就不添加此字段，也不会额外添加-
 *    {suffix}: 后缀名，默认为properties，也可以通过属性：spring.cloud.nacos.config.file-extension来修改它。
 * 7、分组：
 *      可以用来隔离环境。
 * 8、命名空间：
 *      可以隔离项目模块。
 * 9、扩展配置：
 * 10、共享配置：
 *
 */
@SpringBootApplication(scanBasePackages = "com.hzit")
// @EnableDiscoveryClient           //加不加此注解都没关系
@EnableFeignClients(basePackages = "com.hzit.auth.client")         // 开启微服务调用
public class HzitManagerApplication {
	public static void main(String[] args) {
		ConfigurableApplicationContext run = SpringApplication.run(HzitManagerApplication.class);
		// String[] beanDefinitionNames = run.getBeanDefinitionNames();
		// for (String definitionName : beanDefinitionNames) {
		// 	System.out.println("definitionName = " + definitionName);
		// }
	}
}
